package com.example.demo.tenant;

import com.example.demo.common.DbConstants;
import org.hibernate.context.spi.CurrentTenantIdentifierResolver;
import org.springframework.stereotype.Component;
import org.springframework.util.StringUtils;

/**
 * 这个类是由Hibernate提供的用于识别tenantId的类，当每次执行sql语句被拦截就会调用这个类中的方法来获取tenantId
 * @version 1.0
 */
@Component
public class MultiTenantIdentifierResolver implements CurrentTenantIdentifierResolver {

    /**
     * 获取tenantId的逻辑在这个方法里面写
     */
    @Override
    public String resolveCurrentTenantIdentifier() {
        String tenantId = TenantContextHolder.getTenant();
        return !StringUtils.isEmpty(tenantId) ? tenantId : DbConstants.DEFAULT_DATABASE;
    }

    @Override
    public boolean validateExistingCurrentSessions() {
        return true;
    }
}
